import allure
from selenium.webdriver.support.wait import WebDriverWait
from utils.get_driver import UtilsDriver


# 对象库层基类封装
class Base:
    def __init__(self):
        self.driver = UtilsDriver.get_app_driver()  # 获取app驱动

    # 查找元素方法 (提供：点击、输入、获取文本)使用
    def base_find_element(self, loc,timeout=30, poll=0.5):
        wait = WebDriverWait(self.driver,  timeout=timeout, poll_frequency=poll)
        element = wait.until(lambda x: x.find_element(*loc))
        return element


    # 点击方法
    def base_click(self,loc):
        self.base_find_element(loc).click()

    # 输入方法
    def base_input(self,loc,value):
        element = self.base_find_element(loc)
        # 清空
        element.clear()
        # 输入
        element.send_keys(value)

    # 输入方法_不用清除
    def base_input_no_clear(self,loc,value):
        element = self.base_find_element(loc)
        # 输入
        element.send_keys(value)

    # 获取文本方法
    def base_get_text(self,loc):
        element=self.base_find_element(loc)
        return element.text

    # 截图方法
    def base_get_image(self):
        self.driver.get_screenshot_as_file("fail.png")

    # allure报告截图方法
    def base_get_allure_image(self):
        allure.attach(self.driver.get_screenshot_as_png(), "截图", allure.attachment_type.PNG)

    # 获取文本方法
    def base_get_text(self,loc):
        element=self.base_find_element(loc)
        return element.text
